Zabbix Proxy代理介绍与部署
一、概览
Zabbix Proxy可以代表Zabbix server收集性能和可用性数据。 通过这种方式,proxy可以自己承担一些收集数据的负载,并减轻Zabbix Server的负担。
此外,当所有agents和proxy都向一个Zabbix server报告并且所有数据都集中收集时,使用Proxy代理是实现集中式和分布式监控的最简单方法。
Zabbix proxy 可以被使用作为:
- 监控远程位置
- 监控通信不可靠的位置
- 在监视数千个设备时卸载Zabbix服务器
- 简化分布式监控的维护
proxy 只需要一个到Zabbix server的TCP连接。 这样就可以更容易地绕过防火墙,因为您只需要配置一条防火墙规则。
Zabbix proxy代理必须使用单独的数据库。将其指向Zabbix server数据库将破坏配置。
proxy收集的所有数据在传输到server之前都存储在本地。这种方式不会因为与server之间的任何临时通信问题而丢失数据。ProxyLocalBuffer和ProxyOfflineBuffer参数在proxy配置文件控制数据在本地保存多长时间。
可能会出现这样的情况:直接从Zabbix server数据库接收最新配置更改的proxy代理拥有比Zabbix server更最新的配置,而Zabbix server的配置可能因为CacheUpdateFrequency的值而不能快速更新。因此,proxy代理可能会开始收集数据并将它们发送到忽略这些数据的Zabbix server。
Zabbix proxy代理是一个数据收集器。 它不计算触发器、处理事件或发送警报。
有关什么是proxy代理功能的概述,请查看下表:
| 功能 |
proxy支持列表 |
|
|---|---|---|
| Items | ||
| Zabbix agent checks | Yes | |
| Zabbix agent checks (active) | Yes | |
| Simple checks | Yes | |
| Trapper items | Yes | |
| SNMP checks | Yes | |
| SNMP traps | Yes | |
| IPMI checks | Yes | |
| JMX checks | Yes | |
| Log file monitoring | Yes | |
| Internal checks | Yes | |
| SSH checks | Yes | |
| Telnet checks | Yes | |
| External checks | Yes | |
| Dependent items | Yes | |
| Script items | Yes | |
| 内置网页监控 | Yes | |
| 监控项值预处理 | Yes | |
| 网络自动发现 | Yes | |
| 主动代理自动注册 | Yes | |
| 低级别自动发现 | Yes | |
| 远程命令 | Yes | |
| 计算触发器 | No | |
| 处理事件 | No | |
| 事件关联 | No | |
| 发送警报 | No |
[1] 为确保agent请求proxy(而不是server)进行活动检查,proxy代理必须被列于ServerActive 配置文件中的参数。
过载保护
如果Zabbix server宕机一段时间,proxy已经收集了大量数据,然后server启动,它可能会超载(历史缓存使用率在一段时间内保持在95-100%)。这种过载可能会导致性能下降,检查的处理速度比正常情况下要慢。 对这种场景的保护是为了避免由于重载历史缓存而产生的问题。
当Zabbix server 历史缓存满时,历史缓存写访问被限制,停止server数据收集进程。最常见的历史缓存过载情况是server停机后,proxy上传收集的数据。 为了避免这种情况,添加了proxy节流(目前无法禁用)。
当历史缓存使用率达到80%时,Zabbix server 将停止接受来自proxy的数据。 相反,这些proxy将被放在一个节流列表中。 这将持续到缓存使用率下降到60%。现在,server 将开始逐一接受来自节流列表定义的proxy的数据。 这意味着在节流期间试图上载数据的第一个proxy将首先被接收数据,在此之前,server将不会接受来自其他proxy的数据。
这种调节模式将继续,直到缓存使用率再次达到80%,或者下降到20%,或者调节列表为空。 在第一种情况下,server 将再次停止接受proxy数据。 在另外两种情况下,server 将开始正常工作,接受来自所有proxy的数据。
上述信息可以用以下表格表示:
| History write cache usage | Zabbix server模式 | Zabbix server执行操作 |
|---|---|---|
| 达到 80% | 等待 | 停止接受 proxy 数据,但维护一个节流列表(即将要连接的proxy的优先列表)。 |
| 下降到 60% | 节流 | 开始处理限制列表,但仍不接受proxy数据。 |
| D下降到 20% | 正常 | 删除限制列表,并开始正常接受proxy数据。 |
你可以使用zabbix[wcache,history,pused] 内部项将Zabbix server的行为与一个度量关联起来。
二、Zabbix前端配置
如果你 安装 和配置 一个proxy , 下一步就是Zabbix前端配置。
添加一个proxy节点
在zabbix前端配置一个proxy
- 前往: Administration → Proxies
- 点击 创建 proxy
| 参数 | 描述 | |
|---|---|---|
| Proxy name | 输入proxy名称。它必须与proxy配置文件中的Hostname参数中的名称相同。 | |
| Proxy group | 为 proxy 选择 proxy群组 负载均衡/高可用. 一个proxy只能选择一个proxy群组。 | |
| 主动模式 active agents 参数地址 | 监控的主动模式active agent或发送者 zabbix sender 必须连接的地址。仅支持 Zabbix 7.0 版本或更高版本的agent。 此地址用于连接主动 active和 被动 passive agent。仅当在 _Proxy group 字段中选择了群组时,此字段才可用。 | |
| Address | IP地址或者DNS名称使用连接。 | |
| Port | 要连接的 TCP 端口号(默认为 10051)。支持用户宏。 | |
| *Proxy mode | 选择proxy模式。 主动 - proxy将连接到Zabbix server并请求配置数据 被动 - - Zabbix server连接到proxy Note 没有加密的通信(敏感的)proxy配置数据可能会成为可以访问Zabbix服务器的端口时,使用一个主动的proxy。这是可能的,因为任何人都可以假装是一个活动的proxy并请求配置数据,如果身份验证没有发生或proxy地址不受限制在Proxy 地址字段。 | |
| Proxy address | 如果指定,则仅接受来自此逗号分隔的IP地址列表(可选CIDR表示法)或主动Zabbix proxy的DNS名称的主动 proxy 请求 只有在“*proxy 模式”字段中选择了主动 proxy时,此字段才可用。不支持宏。 | |
| Interface | 输入被动proxy的接口详细信息 只有在“proxy模式”字段中选择了被动proxy时,此字段才可用。 | |
| Address | IP address/DNS name of the passive proxy. | |
| Port | 被动proxy的TCP端口号(默认为10051)。支持用户宏。 | |
| Description | 输入proxy 描述。 |
加密选项卡允许您要求与proxy的加密连接。
| 参数 | 描述 |
|---|---|
| Connections to proxy | 服务器如何连接到被动proxy: 不加密(默认),使用PSK(预共享密钥)或证书。 |
| Connections from proxy | 选择从活动proxy中允许的连接类型。 可以同时选择几种连接类型(这对于测试和切换到其他连接类型很有用)。 默认为“不加密”。 |
| Issuer | 允许的证书颁发者。 证书首先由CA(证书颁发机构)验证。 如果它是有效的,由CA签名,那么Issuer字段可以用于进一步限制所允许的CA。此字段是可选的,用于Zabbix安装使用来自多个CA的证书时。 |
| Subject | 证书允许的主题。 证书首先由CA验证。如果它是有效的,由CA签名,那么Subject字段可以用来只允许一个值的Subject字符串。 如果此字段为空,则接受由配置的CA签名的任何有效证书。 |
| PSK identity | - 预共享密钥标识字符串。 不要把敏感信息放在PSK身份中,它在网络上未经加密传输,以通知接收方使用哪个PSK。 |
| PSK | Pre-shared关键(hex-string)。最大长度: 512十六进制数字(256字节PSK) 如果Zabbix使用GnuTLS或OpenSSL库,64十六进制数字(32字节PSK)如果Zabbix使用mbed TLS (PolarSSL)库。 例如: 1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952 |
超时选项卡 global 允许您覆盖支持它的项目类型的超时。
主机配置
你可以在主机配置表单中指定一个单独的主机应该被一个proxy监控,使用Monitored by proxy字段。
主机 批量更新是指定主机应该由proxy监视的另一种方式。
三、Zabbix Proxy部署
我们操作系统环境是ubuntu server 24.04,zabbix proxy数据库选择MYSQL
2 Install and configure Zabbix for your platform
a. Become root user
Start new shell session with root privileges.
$ sudo -s
b. Install Zabbix repository
# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
# dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
# apt update
c. Install Zabbix proxy
# apt install zabbix-proxy-mysql zabbix-sql-scripts
d. Create initial database
Make sure you have database server up and running.
Run the following on your database host.
# mysql -uroot -p
password
mysql> create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
On Zabbix server host import initial schema and data. You will be prompted to enter your newly created password.
# cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy
Disable log_bin_trust_function_creators option after importing database schema.
# mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
e. Configure the database for Zabbix proxy
Edit file /etc/zabbix/zabbix_proxy.conf
DBPassword=password
f. Start Zabbix proxy process
Start Zabbix proxy process and make it start at system boot.
# systemctl restart zabbix-proxy
# systemctl enable zabbix-proxy
官方部署参考文档如下:
https://www.zabbix.com/documentation/7.0/zh/manual/distributed_monitoring/proxies




